[WIP]refactor: refactor java-sdk modules#7
Conversation
|
Here is the overall design of the module: |
|
|
|
And I try using |
|
API generated by protobuf |
|
|
|
|
|
Thanks for your contribution! |
|
So the dependency graph is : Right? |
|
不好意思现在才回,我用中文说吧,感觉这个PR的设计有点复杂了,没法满足sdk的设计目标 sdk的设计目标1.普通的sdk模块要足够简单,简单到非java选手学一下java语法就能上手开发目前sdk里的代码很多就是非java开发者写的,比如 @MoonShining @ccx1024cc 他们在学习java语法后都能写出很好的sdk代码。 举个例子,现在sdk代码里有很多用数组的地方,其实这不是java风格,java常用List。但是这无所谓,这些数组是非java同学贡献的,并不影响使用。 那么怎么判断代码是否"简单"?衡量标准就是:非java选手想要给普通的sdk模块加功能时,能快速看懂,快速上手开发。 因此要减少开发者打开搜索引擎搜东西的次数。比如不往里面放maven相关的trick(最好不要让一个非java选手打开搜索引擎去搜maven这些配置项干嘛的,他只需要知道java语法),比如能不抽象尽量不抽象,不做一些DDD之类的领域建模、分层(我不是说建模、分层不好,只是这些技巧适合用在复杂系统里,不适合用在这个sdk)再比如一些高级语法糖也是尽量不用。 这也是为啥想把reactor相关的代码和普通sdk的代码放在不同模块:非java选手在上手开发(普通的sdk模块)时,只看非reactor模块的代码,不需要打开搜索引擎去搜reactor相关的知识,也不需要去搜索maven的配置项是啥意思
2.隔离: 让 "简单的部分" 和 "极客的部分" 隔离开当然,这不代表我们不想往sdk里添加复杂度,我最近也在学reactor,挺有意思,感觉和nodejs的编程风格是相通的。 所以我个人觉得,我们当然可以往里面添加复杂度,但需要把"简单的部分"和 "极客的部分" 隔离开,让非java的beginner不需要点开"极客的部分"就能看懂代码、往里面添加自己想要的功能。 这样我们就能随意往 "极客的部分" 添加复杂度(比如用各种java高版本的语法糖,甚至干脆只支持java 11),省的去考虑一些兼容问题,或者非java选手的感受。 这样隔离之后,也能让社区对"极客的部分"足够自治。比如邀请你作为这部分的reviewer,你来对PR把关,有新PR你说了算 :) 具体模块分层基于上述原则,我个人的想法是: 解释: simple enough for non-java developers
geeks for geeks
这只是我个人想法,如果您觉得不妥、有其他诉求(比如想拆出来一个sdk-grpc包、用来给别的项目import?)咱们都可以商量哈,只要能满足上面说的设计目标即可。 如果您觉得打字沟通效率太低,咱们可以搞个社区视频会议聊一下 |
| <parent> | ||
| <artifactId>runtime-sdk-parent</artifactId> | ||
| <groupId>io.mosn.layotto</groupId> | ||
| <version>1.1.0-SNAPSHOT</version> |
There was a problem hiding this comment.
Could u add a version property to manage all the pom version?
|
@seeflood 非常感谢你的建议!是的,你说的没错,我已经意识到了这一点。 目前我正在将rx相关内容从核心逻辑中剥离出来,尽量保持原sdk不变,依赖关系图基本如你所示。 我会在完成这部分更改后,将代码提交到这个PR中。 非常感谢你的review,让我们保持讨论。 |
|
Hi,我调整后的代码设计和你的图示有两点不同:
|
|
这是一个Big PR,我仅在这里展示我做出的所有改动。 当讨论过后确定改动时,我会分成两个PR再次进行提交:
您认为这样OK吗? |


Hi, now I am making this part codes,
@seeflood can you review this?(when you have time)
I have added some module introductions below,
Looking forward to your suggestions, I will take time to discuss and refactor my code.
Thank you so much!